# ===重试机制
import time


def retry_wrapper(func, params={}, func_name='', sleep_seconds=3, retry_times=5):
    """
    需要在出错时不断重试的函数，例如和交易所交互，可以使用本函数调用。
    :param func: 需要重试的函数名
    :param params: func的参数
    :param func_name: 本次动作的名称
    :param sleep_seconds: 报错后的sleep时间
    :param retry_times: 为最大的出错重试次数
    :return:
    """

    for _ in range(retry_times):
        try:
            result = func(params=params)
            return result
        except Exception as e:
            _ = func_name, '报错，报错内容：', str(e), '程序暂停(秒)：', sleep_seconds
            print(_)
            time.sleep(sleep_seconds)
    else:
        raise ValueError(func_name, '报错重试次数超过上限，程序退出。')
